<?php

class Clients extends Pdo2 {

    // METHODES // 
    
    public static function afficher_infos_clients($pId){
    
    	$resultats = self::afficher_client($pId);
  
    	return $resultats;
    }
    
    public static function afficher_nom_prenom_raison_sociale($pId){
    
    	$toutes_infos = self::afficher_client($pId);
    	 
    	$idClient = $pId;
    	$nomPrenom = $toutes_infos->nomResponsableClient.' '.$toutes_infos->prenomResponsableClient;
    	$raison_sociale = $toutes_infos->raisonSocialeClient;
    	 
    	if (self::renvoyer_bool_particulier($pId)== false)
    		$infos_entete = array($idClient,$raison_sociale);
    	
    	else
    		$infos_entete = array($idClient,$nomPrenom);

    	return $infos_entete;
    }
    
    public static function renvoyer_bool_particulier($IdClient){
    
    	$sql = "SELECT raisonSocialeClient
						FROM clients
						WHERE idClient=". $IdClient ;
    	
    	$resultats = Req::selectionner($sql);
    	
    	if ($resultats->raisonSocialeClient == 'Particulier')
    		return true;

    	else
    		return false;
    }
   
    public static function recherchePar($champsRecherche, $chaineSaisie) {
    	
    	$infos = self::rechercheClient($champsRecherche, $chaineSaisie);
    	
    	return $infos;
	}
	
	public static function finMotRecherche($motRecherche, $resultatRecherche) {
		 
		// Action pour afficher entre parenthèses l'objet de la recherche
    	$nbreCaracteresSaisie = strlen($motRecherche);
		$nbreCaracteresTrouve = strlen($resultatRecherche);
		
    	$nbreDeCaractereDeDifference = ($nbreCaracteresTrouve - $nbreCaracteresSaisie);
    	$finDeChaine = substr($resultatRecherche, $nbreCaracteresSaisie, $nbreDeCaractereDeDifference);
 
		return $finDeChaine;
	}
	
	// Affichage de la vue dans le Cas où un seul client correspond à la recherche
	public static function unResultatTrouve($clientTrouve, $valeurRecherchee, $rechercherPar) {
		
		if ( $clientTrouve[0]->raisonSocialeClient != "Particulier" )
			$resultats = $clientTrouve[0]->raisonSocialeClient;
		
		else
			$resultats = $clientTrouve[0]->nomResponsableClient." ".$clientTrouve[0]->prenomResponsableClient;
		
		$idClient = $clientTrouve[0]->idClient;
		
		include 'module_clients/vues/sous_vue_ligne_1.php';
	}
	
	// Affichage des vues dans le Cas où plusieurs clients correspondent à la recherche
	public static function plusieursResultatsTrouves($clientsTrouves, $valeurRecherchee, $rechercherPar) {
	
		// Variable pour définir les nombres pair ou impair
		$i = 0;
		
		// Parcours des résultats
		foreach ($clientsTrouves as $clientTrouve) {
		
			if ($clientTrouve->raisonSocialeClient != "Particulier" )
				$resultats = $clientTrouve->raisonSocialeClient;
		
			else
				$resultats = $clientTrouve->nomResponsableClient." ".$clientTrouve->prenomResponsableClient;
			
			$idClient = $clientTrouve->idClient;
			
			// Pair
			if( $i % 2 == 0)
				include 'module_clients/vues/sous_vue_ligne_1.php';
		
			// Impair
			else
				include 'module_clients/vues/sous_vue_ligne_2.php';
			
			$i++;
		}
	}
	
	// Ajout d'un client
	public static function ajoutClient($raisonSociale, $nom, $prenom, $adresse, $adresse2, $email, $tel, $tel2,  $fax, $commentaire, $commune) {
		
		$requeteReussie = false;
		
		// Professionnels
		if( $raisonSociale != "") {
		
			$sql = "INSERT INTO clients 
							VALUES ( null,
												 '".trim(strtoupper($raisonSociale))."',
												 '".trim(strtoupper($nom))."',
												 '".trim($prenom)."',
												 '".trim($adresse)."',
												 '".trim($adresse2)."',
												 '".trim($email)."',
												 '".trim($tel)."',
												 '".trim($tel2)."',
												 '".trim($fax)."',
												 '".trim($commentaire)."',
												 '".trim($commune)."',
												 null,
												 'FALSE')";
		}
		
		// Particuliers
		else {
			
			$sql = "INSERT INTO clients
							VALUES ( null,
												'Particulier',
												'".trim(strtoupper($nom))."',
												'".trim($prenom)."',
												'".trim($adresse)."',
												'".trim($adresse2)."',
												'".trim($email)."',
												'".trim($tel)."',
												'".trim($tel2)."',
												'".trim($fax)."',
												'".trim($commentaire)."',
												'".trim($commune)."',
												null,
												'FALSE')";
		}
		
		// Le client n'existe pas
		if(self::clientExistant($raisonSociale, $nom, $prenom) == false) 
			$requeteReussie = Req::inserer($sql);
		
		// Le client existait déjà
		return $requeteReussie;
	}

	// Update des informations dans la base
	public static function modifierClient($idClient, $raisonSociale, $nom, $prenom,  $adresse, $adresse2, $email, $tel, $tel2,  $fax, $commentaire, $commune) {
		
		$table = array(
				"clients",
				"idClient",
				"raisonSocialeClient",
				"nomResponsableClient",
				"prenomResponsableClient",
				"adresseClient",
				"adresse2Client",
				"emailClient",
				"telephoneClient",
				"telephone2Client",
				"faxClient",
				"commentaireClient",
				"idCommune",
				"dateConsultationClient",
				"cleModifClient"
				);
		
		$valeurChamp = array(
					$idClient,
					$raisonSociale,
					$nom,
					$prenom,
					$adresse,
					$adresse2,
					$email,
					$tel,
					$tel2,
					$fax,
					$commentaire,
					$commune,
					time(),
					null
				);
		
		
		$requeteReussie = Req::modifier($idClient, $table, $valeurChamp);
	}
	
	// Retourne vrai ou faux si le client existe déjà dans la base
	public static function clientExistant($raisonSociale, $nom, $prenom ) {
		
		// C'est un particulier
		if($raisonSociale == "Particulier") {
			
			$sql = "SELECT idClient
							FROM clients
							WHERE nomResponsableClient = '".$nom."'
							AND prenomResponsableClient = '".$prenom."'
							AND raisonSocialeClient = 'Particulier' ";
		}
		
		// C'est une entreprise
		else {
			
			$sql = "SELECT idClient
							FROM clients
							WHERE raisonSocialeClient = '$raisonSociale'";
		}
		
		// Préparation et éxécution de la requête SQL
		$resultat = Req::selectionner($sql);
		
		// Le client existe déjà
		if( $resultat)
			return $resultat->idClient;
		
		// Client inexistant 
		else 
			return false;
		
	} 
	
	public static function supprimerClient($idClient){
		
		$sql = "DELETE FROM clients
						WHERE idClient = ".$idClient;
		
		$requeteReussie = Req::effacer($sql);
		
		if($requeteReussie)
			return true;
		
		else 
			return false;
	}

	public static function rechercheClient($nomChampRecherche, $valeurSaisie) {
		
		// Recherche des derniers consultés
		if( $valeurSaisie == "")
			$sql = "SELECT *
							FROM clients
							ORDER BY dateConsultationClient DESC 
							LIMIT 0,15";

		else 
			$sql = "SELECT *
							FROM clients
							WHERE ".$nomChampRecherche." LIKE '".$valeurSaisie."%'
							ORDER BY raisonSocialeClient, nomResponsableClient, prenomResponsableClient ASC";
				
		$resultats = Req::selectionnerTous($sql);
		 
		return $resultats;
	}
	
	public static function afficher_client($IdClient){
	
		$sql = "SELECT clients.*, nomCommune, cpCommune
		FROM clients
		JOIN communes
		ON clients.idCommune = communes.idCommune
		WHERE idClient=". $IdClient."" ;
	
		$resultats = Req::selectionner($sql);
		 
		return $resultats;
	}
	
	// Fournir le numéro de département
	public static function afficherCommunes($cp) {
	
		$sql = "SELECT *
						FROM communes
						WHERE cpCommune LIKE '".$cp."%'
						ORDER BY nomCommune";
	
		$resultats = Req::selectionnerTous($sql);
	
		return $resultats;
	}

	// Fournir le numéro de département
	public static function afficherCommunesParLettre($cp, $lettre) {
	
		$sql = "SELECT *
						FROM communes
						WHERE cpCommune LIKE '".$cp."%'
						AND nomCommune LIKE '".$lettre."%'
						ORDER BY nomCommune";
	
		$resultats = Req::selectionnerTous($sql);
	
		return $resultats;
	}

	public static function consultationClient($idClient){

		$sql = "UPDATE clients  
						SET dateConsultationClient = NULL 
					    WHERE idClient = ".$idClient;	
		
		$requetePreparee = self::getPdo()->prepare($sql);
		$requeteReussie = $requetePreparee->execute();
		
		if($requeteReussie)
			return TRUE;
		
		else
			return FALSE;
		
	}	

}

